JBoss Community Archive (Read Only)

Teiid 8.0

BNF for SQL Grammar

All Productions

aggregateSymbol

allInGroupSymbol

alter

arrayTable

assignStatement

assignStatementOperand

betweenCrit

booleanPrimary

branchingStatement

callableStatement

caseExpression

charVal

columnList

command

commonValueExpression

compareCrit

compoundCritAnd

compoundCritOr

compoundStatement

constraints

createColumn

createDDLProcedure

createElementsWithTypes

createNameSpace

createProcedure

createTable

createTempTable

createTrigger

criteria

crossJoin

dataType

ddlStmts

declareStatement

delete

delimitedStatement

derivedColumn

designerCommand

dropTable

dynamicCommand

errorStatement

executeNamedParams

executeUnnamedParams

existsCriteria

expression

expressionList

fetchLimit

filterClause

forEachRowTriggerAction

foreignKeys

from

function

getColumnNames

groupBy

having

id

idExpression

ifStatement

insert

intParam

intVal

intervalType

into

isNullCrit

joinedTable

limit

literal

loopStatement

matchCrit

namespaceItem

nonReserved

notCrit

operator

option

optionPair

optionsClause

orderby

orderedAgg

parseDataType

parseMetadata

plusExpression

plusOperator

primaryKeys

procedureParameter

procedureReturn

qualifiedJoin

query

queryExpression

queryExpressionBody

queryPrimary

queryString

queryTerm

regexMatchCrit

searchedCaseExpression

select

selectExpression

selectSymbol

setClauseList

setCrit

sortKey

sortSpecification

sqlStatement

statement

storedProcedure

stringConstant

stringVal

subquery

subqueryAndHint

subqueryCompareCriteria

subqueryFromClause

tableElement

tablePrimary

tableReference

textAgg

textColumn

textTable

timesExpression

timesOperator

unaryFromClause

update

updateProcedure

userCommand

valueExpressionPrimary

where

whileStatement

windowSpecification

withListElement

xmlAttributes

xmlColumn

xmlElement

xmlForest

xmlNamespaces

xmlParse

xmlQuery

xmlSerialize

xmlTable

Tokens

<DEFAULT> SKIP : {
" "
| "\t"
| "\n"
| "\r"
}

<DEFAULT> MORE : {
"/*" : IN_MULTI_LINE_COMMENT
}

<IN_MULTI_LINE_COMMENT> MORE : {
"/*" : {
}

<IN_MULTI_LINE_COMMENT> SPECIAL : {
"*/" : {
}

<IN_MULTI_LINE_COMMENT> MORE : {
<~[]>
}

<DEFAULT> TOKEN : {
<STRING: "string">
| <VARBINARY: "varbinary">
| <VARCHAR: "varchar">
| <BOOLEAN: "boolean">
| <BYTE: "byte">
| <TINYINT: "tinyint">
| <SHORT: "short">
| <SMALLINT: "smallint">
| <CHAR: "char">
| <INTEGER: "integer">
| <LONG: "long">
| <BIGINT: "bigint">
| <BIGINTEGER: "biginteger">
| <FLOAT: "float">
| <REAL: "real">
| <DOUBLE: "double">
| <BIGDECIMAL: "bigdecimal">
| <DECIMAL: "decimal">
| <DATE: "date">
| <TIME: "time">
| <TIMESTAMP: "timestamp">
| <OBJECT: "object">
| <BLOB: "blob">
| <CLOB: "clob">
| <XML: "xml">
}

<DEFAULT> TOKEN : {
<CAST: "cast">
| <CONVERT: "convert">
}

<DEFAULT> TOKEN : {
<ADD: "add">
| <ALL: "all">
| <ALTER: "alter">
| <AND: "and">
| <ANY: "any">
| <ARRAY: "array">
| <ARRAY_AGG: "array_agg">
| <AS: "as">
| <ASC: "asc">
| <ATOMIC: "atomic">
| <AUTORIZATION: "authorization">
| <BEGIN: "begin">
| <BETWEEN: "between">
| <BINARY: "binary">
| <BOTH: "both">
| <BREAK: "break">
| <BY: "by">
| <CALL: "call">
| <CALLED: "called">
| <CASCADED: "cascaded">
| <CASE: "case">
| <CHARACTER: "character">
| <CHECK: "check">
| <CLOSE: "close">
| <COLLATE: "collate">
| <COLUMN: "column">
| <COMMIT: "commit">
| <CONNECT: "connect">
| <CONSTRAINT: "constraint">
| <CONTINUE: "continue">
| <CORRESPONDING: "corresponding">
| <CURRENT_DATE: "current_date">
| <CURRENT_TIME: "current_time">
| <CURRENT_TIMESTAMP: "current_timestamp">
| <CURRENT_USER: "current_user">
| <CREATE: "create">
| <CRITERIA: "criteria">
| <CROSS: "cross">
| <CURSOR: "cursor">
| <DAY: "day">
| <DEALLOCATE: "deallocate">
| <DEFAULT_KEYWORD: "default">
| <DECLARE: "declare">
| <DELETE: "delete">
| <DESC: "desc">
| <DESCRIBE: "describe">
| <DETERMINISTIC: "deterministic">
| <DISCONNECT: "disconnect">
| <DISTINCT: "distinct">
| <DROP: "drop">
| <EACH: "each">
| <ELSE: "else">
| <END: "end">
| <ERROR: "error">
| <ESCAPE: "escape">
| <EXCEPT: "except">
| <EXEC: "exec">
| <EXECUTE: "execute">
| <EXTERNAL: "external">
| <EXISTS: "exists">
| <FALSE: "false">
| <FETCH: "fetch">
| <FILTER: "filter">
| <FOR: "for">
| <FOREIGN: "foreign">
| <FROM: "from">
| <FULL: "full">
| <FUNCTION: "function">
| <GET: "get">
| <GLOBAL: "global">
| <GRANT: "grant">
| <GROUP: "group">
| <HAS: "has">
| <HAVING: "having">
| <HOLD: "hold">
| <HOUR: "hour">
| <IF: "if">
| <IDENTITY: "identity">
| <IMMEDIATE: "immediate">
| <IN: "in">
| <INDICATOR: "indicator">
| <INNER: "inner">
| <INPUT: "input">
| <INOUT: "inout">
| <INSENSITIVE: "insensitive">
| <INSERT: "insert">
| <INTERSECT: "intersect">
| <INTERVAL: "interval">
| <INTO: "into">
| <IS: "is">
| <ISOLATION: "isolation">
| <JOIN: "join">
| <LEFT: "left">
| <LANGUAGE: "language">
| <LARGE: "large">
| <LEADING: "leading">
| <LEAVE: "leave">
| <LIKE: "like">
| <LIKE_REGEX: "like_regex">
| <LIMIT: "limit">
| <LOCAL: "local">
| <LOOP: "loop">
| <MAKEDEP: "makedep">
| <MAKENOTDEP: "makenotdep">
| <MATCH: "match">
| <MERGE: "merge">
| <METHOD: "method">
| <MINUTE: "minute">
| <MODIFIES: "modifies">
| <MODULE: "module">
| <MONTH: "month">
| <NATURAL: "natural">
| <NEW: "new">
| <NOCACHE: "nocache">
| <NO: "no">
| <NONE: "none">
| <NOT: "not">
| <NULL: "null">
| <OF: "of">
| <OFFSET: "offset">
| <OLD: "old">
| <ON: "on">
| <ONLY: "only">
| <OPEN: "open">
| <OPTION: "option">
| <OPTIONS: "options">
| <OR: "or">
| <ORDER: "order">
| <OUT: "out">
| <OUTER: "outer">
| <OUTPUT: "output">
| <OVER: "over">
| <OVERLAPS: "OVERLAPS">
| <PARAMETER: "parameter">
| <PARTITION: "partition">
| <PRECISION: "precision">
| <PREPARE: "prepare">
| <PRIMARY: "primary">
| <PROCEDURE: "procedure">
| <RANGE: "range">
| <READS: "reads">
| <RECURSIVE: "recursive">
| <REFERENCES: "REFERENCES">
| <REFERENCING: "REFERENCING">
| <RETURN: "return">
| <RETURNS: "returns">
| <REVOKE: "REVOKE">
| <RIGHT: "right">
| <ROLLBACK: "ROLLBACK">
| <ROLLUP: "ROLLUP">
| <ROW: "row">
| <ROWS: "rows">
| <SAVEPOINT: "savepoint">
| <SCROLL: "scroll">
| <SEARCH: "search">
| <SECOND: "second">
| <SELECT: "select">
| <SENSITIVE: "sensitive">
| <SESSION_USER: "session_user">
| <SET: "set">
| <SIMILAR: "similar">
| <SPECIFIC: "specific">
| <SOME: "some">
| <SQL: "sql">
| <SQLEXCEPTION: "sqlexception">
| <SQLSTATE: "sqlstate">
| <SQLWARNING: "sqlwarning">
| <START: "start">
| <STATIC: "static">
| <SYSTEM: "system">
| <SYSTEM_USER: "system_user">
| <TABLE: "table">
| <TEMPORARY: "temporary">
| <THEN: "then">
| <TIMEZONE_HOUR: "timezone_hour">
| <TIMEZONE_MINUTE: "timezone_minute">
| <TO: "to">
| <TRAILING: "trailing">
| <TRANSLATE: "translate">
| <TRIGGER: "trigger">
| <TRUE: "true">
| <UNION: "union">
| <UNIQUE: "unique">
| <UNKNOWN: "unknown">
| <USER: "user">
| <UPDATE: "update">
| <USING: "using">
| <VALUE: "value">
| <VALUES: "values">
| <VIRTUAL: "virtual">
| <WHEN: "when">
| <WHENEVER: "whenever">
| <WHERE: "where">
| <WITH: "with">
| <WHILE: "while">
| <WINDOW: "window">
| <WITHIN: "within">
| <WITHOUT: "without">
| <YEAR: "year">
| <ALLOCATE: "allocate">
| <ARE: "are">
| <ASENSITIVE: "asensitive">
| <ASYMETRIC: "asymetric">
| <CYCLE: "cycle">
| <DEC: "dec">
| <DEREF: "deref">
| <DYNAMIC: "dynamic">
| <ELEMENT: "element">
| <FREE: "free">
| <INT: "int">
| <LATERAL: "lateral">
| <LOCALTIME: "localtime">
| <LOCALTIMESTAMP: "localtimestamp">
| <MEMBER: "member">
| <MULTISET: "multiset">
| <NATIONAL: "national">
| <NCHAR: "nchar">
| <NCLOB: "nclob">
| <NUMERIC: "numeric">
| <RELEASE: "release">
| <SPECIFICTYPE: "specifictype">
| <SYMETRIC: "symetric">
| <SUBMULTILIST: "submultilist">
| <TRANSLATION: "translation">
| <TREAT: "treat">
| <VARYING: "varying">
}

<DEFAULT> TOKEN : {
<XMLAGG: "xmlagg">
| <XMLATTRIBUTES: "xmlattributes">
| <XMLBINARY: "xmlbinary">
| <XMLCAST: "xmlcast">
| <XMLCONCAT: "xmlconcat">
| <XMLCOMMENT: "xmlcomment">
| <XMLDOCUMENT: "xmldocument">
| <XMLELEMENT: "xmlelement">
| <XMLEXISTS: "xmlexists">
| <XMLFOREST: "xmlforest">
| <XMLITERATE: "xmliterate">
| <XMLNAMESPACES: "xmlnamespaces">
| <XMLPARSE: "xmlparse">
| <XMLPI: "xmlpi">
| <XMLQUERY: "xmlquery">
| <XMLSERIALIZE: "xmlserialize">
| <XMLTABLE: "xmltable">
| <XMLTEXT: "xmltext">
| <XMLVALIDATE: "xmlvalidate">
}

<DEFAULT> TOKEN : {
<DATALINK: "datalink">
| <DLNEWCOPY: "dlnewcopy">
| <DLPREVIOUSCOPY: "dlpreviouscopy">
| <DLURLCOMPLETE: "dlurlcomplete">
| <DLURLCOMPLETEWRITE: "dlurlcompletewrite">
| <DLURLCOMPLETEONLY: "dlurlcompleteonly">
| <DLURLPATH: "dlurlpath">
| <DLURLPATHWRITE: "dlurlpathwrite">
| <DLURLPATHONLY: "dlurlpathonly">
| <DLURLSCHEME: "dlurlscheme">
| <DLURLSERVER: "dlurlserver">
| <DLVALUE: "dlvalue">
| <IMPORT: "import">
}

<DEFAULT> TOKEN : {
<ALL_IN_GROUP: <ID> <PERIOD> <STAR>>
| <ID: <QUOTED_ID> (<PERIOD> <QUOTED_ID>)*>
| <#QUOTED_ID: <ID_PART> | "\"" ("\"\"" | ~["\""])+ "\"">
| <#ID_PART: ("@" | "#" | <LETTER>) (<LETTER> | "_" | <DIGIT>)*>
| <DATETYPE: "{" "d">
| <TIMETYPE: "{" "t">
| <TIMESTAMPTYPE: "{" "ts">
| <BOOLEANTYPE: "{" "b">
| <POS_REF: ["$"] (<DIGIT>)+>
| <INTEGERVAL: (<MINUS>)? (<DIGIT>)+>
| <DECIMALVAL: (<MINUS>)? (<DIGIT>)* <PERIOD> (<DIGIT>)+>
| <FLOATVAL: (<MINUS>)? <DIGIT> <PERIOD> (<DIGIT>)+ ["e","E"] (["+","-"])? (<DIGIT>)+>
| <STRINGVAL: ("N" | "E")? "\'" ("\'\'" | ~["\'"])* "\'">
| <#LETTER: ["a"-"z","A"-"Z"] | ["\u0153"-"\ufffd"]>
| <#DIGIT: ["0"-"9"]>
| <BINARYSTRINGVAL: "X" | "x" "\'" (<HEXIT> <HEXIT>)+ "\'">
| <#HEXIT: ["a"-"f","A"-"F"] | <DIGIT>>
}

<DEFAULT> TOKEN : {
<COMMA: ",">
| <PERIOD: ".">
| <LPAREN: "(">
| <RPAREN: ")">
| <LBRACE: "{">
| <RBRACE: "}">
| <LSBRACE: "[">
| <RSBRACE: "]">
| <EQ: "=">
| <NE: "<>">
| <NE2: "!=">
| <LT: "<">
| <LE: "<=">
| <GT: ">">
| <GE: ">=">
| <STAR: "*">
| <SLASH: "/">
| <PLUS: "+">
| <MINUS: "-">
| <QMARK: "?">
| <DOLLAR: "$">
| <SEMICOLON: ";">
| <COLON: ":">
| <CONCAT_OP: "||">
}

Non-Terminals

stringVal

::=
( <STRINGVAL> )

id

::=
( <ID> )

command

::=
( createProcedure | userCommand | callableStatement ) ( <SEMICOLON> )? <EOF>

designerCommand

::=
( updateProcedure | userCommand ) ( <SEMICOLON> )? <EOF>

updateProcedure

createTrigger

::=
<CREATE> <TRIGGER> <ON> id nonReserved <OF> ( <INSERT> | <UPDATE> | <DELETE> ) <AS> forEachRowTriggerAction

alter

::=
<ALTER> ( ( nonReserved id <AS> queryExpression ) | ( <PROCEDURE> id <AS> statement ) | ( <TRIGGER> <ON> id nonReserved <OF> ( <INSERT> | <UPDATE> | <DELETE> ) ( ( <AS> forEachRowTriggerAction ) | nonReserved ) ) )

forEachRowTriggerAction

::=
<FOR> <EACH> <ROW> ( ( <BEGIN> ( <ATOMIC> )? ( statement )* <END> ) | statement )

userCommand

dropTable

::=
<DROP> <TABLE> id

createTempTable

::=
<CREATE> <LOCAL> <TEMPORARY> <TABLE> id <LPAREN> tableElement ( <COMMA> tableElement )* ( <COMMA> <PRIMARY> nonReserved <LPAREN> id ( <COMMA> id )* <RPAREN> )? <RPAREN>

tableElement

::=
id ( parseDataType | nonReserved ) ( <NOT> <NULL> )?

errorStatement

::=
<ERROR> expression

statement

delimitedStatement

compoundStatement

::=
<BEGIN> ( ( <NOT> )? <ATOMIC> )? ( statement )* <END>

branchingStatement

::=
( ( ( <BREAK> | <CONTINUE> ) ( id )? ) | ( <LEAVE> id ) )

whileStatement

::=
<WHILE> <LPAREN> criteria <RPAREN> statement

loopStatement

::=
<LOOP> <ON> <LPAREN> queryExpression <RPAREN> <AS> id statement

ifStatement

::=
<IF> <LPAREN> criteria <RPAREN> statement ( <ELSE> statement )?

declareStatement

::=
<DECLARE> dataType id ( ( nonReserved | <EQ> ) assignStatementOperand )?

assignStatement

assignStatementOperand

::=
( ( insert ) | update | delete | ( expression ) | queryExpression )

sqlStatement

::=
( ( userCommand ) | dynamicCommand | ( id ( nonReserved | <EQ> ) storedProcedure ) )

createProcedure

::=
<CREATE> ( <VIRTUAL> )? <PROCEDURE> statement

dynamicCommand

::=
( <EXECUTE> | <EXEC> ) ( ( <STRING> | <IMMEDIATE> ) )? expression ( <AS> createElementsWithTypes ( <INTO> id )? )? ( <USING> setClauseList )? ( <UPDATE> ( ( <INTEGERVAL> ) | ( <STAR> ) ) )?

setClauseList

::=
id <EQ> ( <COMMA> id <EQ> )*

createElementsWithTypes

::=
id parseDataType ( <COMMA> id parseDataType )*

callableStatement

::=
<LBRACE> ( <QMARK> <EQ> )? <CALL> id ( <LPAREN> ( executeUnnamedParams ) <RPAREN> )? <RBRACE> ( option )?

storedProcedure

::=
( ( <EXEC> | <EXECUTE> | <CALL> ) id <LPAREN> ( executeNamedParams | executeUnnamedParams ) <RPAREN> ) ( option )?

executeUnnamedParams

::=
( expression ( <COMMA> expression )* )?

executeNamedParams

::=
( id <EQ> ( <GT> )? expression ( <COMMA> id <EQ> ( <GT> )? expression )* )

insert

::=
<INSERT> <INTO> id ( columnList )? ( ( <VALUES> <LPAREN> expressionList <RPAREN> ) | ( queryExpression ) ) ( option )?

columnList

::=
<LPAREN> id ( <COMMA> id )* <RPAREN>

expressionList

::=
expression ( <COMMA> expression )*

update

::=
<UPDATE> id <SET> setClauseList ( where )? ( option )?

delete

::=
<DELETE> <FROM> id ( where )? ( option )?

queryExpression

withListElement

::=
id ( columnList )? <AS> <LPAREN> queryExpression <RPAREN>

queryExpressionBody

::=
queryTerm ( ( <UNION> | <EXCEPT> ) ( <ALL> | <DISTINCT> )? queryTerm )* ( orderby )? ( limit )? ( option )?

queryTerm

::=
queryPrimary ( <INTERSECT> ( <ALL> | <DISTINCT> )? queryPrimary )*

queryPrimary

::=
( query | ( <TABLE> id ) | ( <LPAREN> queryExpressionBody <RPAREN> ) )

query

::=
select ( into )? ( from ( where )? ( groupBy )? ( having )? )?

into

::=
<INTO> ( id )

select

::=
<SELECT> ( <ALL> | ( <DISTINCT> ) )? ( <STAR> | ( selectSymbol ( <COMMA> selectSymbol )* ) )

selectSymbol

selectExpression

::=
( expression ( ( <AS> )? id )? )

derivedColumn

::=
( expression ( <AS> id )? )

allInGroupSymbol

::=
<ALL_IN_GROUP>

orderedAgg

::=
( <XMLAGG> | <ARRAY_AGG> ) <LPAREN> expression ( orderby )? <RPAREN> filterClause

textAgg

::=
nonReserved <LPAREN> <FOR> derivedColumn ( <COMMA> derivedColumn )* ( <ID> charVal )? ( ( <ID> charVal ) )? ( <ID> )? ( ( <ID> id ) )? ( orderby )? <RPAREN> filterClause

aggregateSymbol

::=
( ( ( nonReserved <LPAREN> <STAR> <RPAREN> ) | ( nonReserved <LPAREN> <RPAREN> ) | ( ( nonReserved | <ANY> | <SOME> ) <LPAREN> ( <DISTINCT> | <ALL> )? expression <RPAREN> ) ) filterClause )

filterClause

::=
( <FILTER> <LPAREN> <WHERE> booleanPrimary <RPAREN> )?

from

::=
<FROM> ( tableReference ( <COMMA> tableReference )* )

tableReference

::=
( ( <LBRACE> nonReserved joinedTable <RBRACE> ) | joinedTable )

joinedTable

crossJoin

::=
( ( <CROSS> | <UNION> ) <JOIN> tablePrimary )

qualifiedJoin

::=
( ( ( <RIGHT> ( <OUTER> )? ) | ( <LEFT> ( <OUTER> )? ) | ( <FULL> ( <OUTER> )? ) | <INNER> )? <JOIN> tableReference <ON> criteria )

tablePrimary

::=
( textTable | arrayTable | xmlTable | unaryFromClause | subqueryFromClause | ( <LPAREN> joinedTable <RPAREN> ) ) ( ( <MAKEDEP> ) | ( <MAKENOTDEP> ) )?

xmlSerialize

::=
<XMLSERIALIZE> <LPAREN> ( nonReserved )? expression ( <AS> ( <STRING> | <VARCHAR> | <CLOB> ) )? <RPAREN>

nonReserved

::=
<ID>

arrayTable

::=
<ID> <LPAREN> expression nonReserved createElementsWithTypes <RPAREN> ( <AS> )? id

textTable

::=
<ID> <LPAREN> expression ( <ID> stringVal )? nonReserved textColumn ( <COMMA> textColumn )* ( <NO> <ROW> nonReserved )? ( <ID> charVal )? ( ( <ESCAPE> charVal ) | ( <ID> charVal ) )? ( <ID> ( intVal )? )? ( <ID> intVal )? <RPAREN> ( <AS> )? id

textColumn

::=
id dataType ( <ID> intVal ( <NO> nonReserved )? )? ( <ID> stringVal intVal )?

xmlQuery

::=
<XMLQUERY> <LPAREN> ( xmlNamespaces <COMMA> )? stringVal ( <ID> derivedColumn ( <COMMA> derivedColumn )* )? ( ( <NULL> | nonReserved ) <ON> nonReserved )? <RPAREN>

xmlTable

::=
<XMLTABLE> <LPAREN> ( xmlNamespaces <COMMA> )? stringVal ( <ID> derivedColumn ( <COMMA> derivedColumn )* )? ( <ID> xmlColumn ( <COMMA> xmlColumn )* )? <RPAREN> ( <AS> )? id

xmlColumn

::=
id ( ( <FOR> nonReserved ) | ( dataType ( <DEFAULT_KEYWORD> expression )? ( nonReserved stringVal )? ) )

intVal

::=
<INTEGERVAL>

subqueryFromClause

::=
( <TABLE> )? <LPAREN> ( queryExpression | storedProcedure ) <RPAREN> ( <AS> )? id

unaryFromClause

::=
( <ID> ( ( <AS> )? id )? )

where

::=
<WHERE> criteria

criteria

compoundCritOr

compoundCritAnd

::=
notCrit ( <AND> notCrit )*

notCrit

::=
( <NOT> )? booleanPrimary

booleanPrimary

operator

::=
( <EQ> | <NE> | <NE2> | <LT> | <LE> | <GT> | <GE> )

compareCrit

subquery

::=
<LPAREN> ( queryExpression | ( storedProcedure ) ) <RPAREN>

subqueryAndHint

subqueryCompareCriteria

::=
operator ( <ANY> | <SOME> | <ALL> ) subquery

matchCrit

::=
( <NOT> )? ( <LIKE> | ( <SIMILAR> <TO> ) ) commonValueExpression ( <ESCAPE> charVal | ( <LBRACE> <ESCAPE> charVal <RBRACE> ) )?

regexMatchCrit

::=
( <NOT> )? <LIKE_REGEX> commonValueExpression

charVal

betweenCrit

::=
( <NOT> )? <BETWEEN> commonValueExpression <AND> commonValueExpression

isNullCrit

::=
<IS> ( <NOT> )? <NULL>

setCrit

::=
( <NOT> )? <IN> ( ( subqueryAndHint ) | ( <LPAREN> commonValueExpression ( <COMMA> commonValueExpression )* <RPAREN> ) )

existsCriteria

::=
<EXISTS> subqueryAndHint

groupBy

::=
<GROUP> <BY> expressionList

having

::=
<HAVING> criteria

orderby

::=
<ORDER> <BY> sortSpecification ( <COMMA> sortSpecification )*

sortSpecification

::=
sortKey ( <ASC> | <DESC> )? ( nonReserved nonReserved )?

sortKey

intParam

::=
( intVal | <QMARK> )

limit

::=
( ( <LIMIT> intParam ( <COMMA> intParam )? ) | ( <OFFSET> intParam ( <ROW> | <ROWS> ) ( fetchLimit )? ) | ( fetchLimit ) )

fetchLimit

::=
<FETCH> nonReserved ( intParam )? ( <ROW> | <ROWS> ) <ONLY>

option

::=
<OPTION> ( <MAKEDEP> id ( <COMMA> id )* | <MAKENOTDEP> id ( <COMMA> id )* | <NOCACHE> ( id ( <COMMA> id )* )? )*

expression

commonValueExpression

::=
( plusExpression ( <CONCAT_OP> plusExpression )* )

plusExpression

plusOperator

::=
( <PLUS> | <MINUS> )

timesExpression

timesOperator

::=
( <STAR> | <SLASH> )

valueExpressionPrimary

::=
( <QMARK> | <POS_REF> | literal | ( <LBRACE> nonReserved function <RBRACE> ) | ( textAgg ( windowSpecification )? ) | ( aggregateSymbol ( windowSpecification )? ) | ( aggregateSymbol ( windowSpecification )? ) | orderedAgg ( windowSpecification )? | ( aggregateSymbol windowSpecification ) | ( function ( windowSpecification )? ) | ( <ID> ( <LSBRACE> intVal <RSBRACE> )? ) | subquery | ( <LPAREN> expression <RPAREN> ( <LSBRACE> intVal <RSBRACE> )? ) | searchedCaseExpression | caseExpression )

windowSpecification

::=
<OVER> <LPAREN> ( <PARTITION> <BY> expressionList )? ( orderby )? <RPAREN>

caseExpression

::=
<CASE> expression ( <WHEN> expression <THEN> expression )+ ( <ELSE> expression )? <END>

searchedCaseExpression

::=
<CASE> ( <WHEN> criteria <THEN> expression )+ ( <ELSE> expression )? <END>

function

::=
( ( <CONVERT> <LPAREN> expression <COMMA> dataType <RPAREN> ) | ( <CAST> <LPAREN> expression <AS> dataType <RPAREN> ) | ( nonReserved <LPAREN> expression ( ( <FROM> expression ( <FOR> expression )? ) | ( <COMMA> expressionList ) ) <RPAREN> ) | ( nonReserved <LPAREN> ( <YEAR> | <MONTH> | <DAY> | <HOUR> | <MINUTE> | <SECOND> ) <FROM> expression <RPAREN> ) | ( nonReserved <LPAREN> ( ( ( ( <LEADING> | <TRAILING> | <BOTH> ) ( expression )? ) | expression ) <FROM> )? expression <RPAREN> ) | ( nonReserved <LPAREN> expression <COMMA> stringConstant <RPAREN> ) | ( nonReserved <LPAREN> intervalType <COMMA> expression <COMMA> expression <RPAREN> ) | queryString | ( ( <LEFT> | <RIGHT> | <CHAR> | <USER> | <YEAR> | <MONTH> | <HOUR> | <MINUTE> | <SECOND> | <XMLCONCAT> | <XMLCOMMENT> ) <LPAREN> ( expressionList )? <RPAREN> ) | ( ( <TRANSLATE> | <INSERT> ) <LPAREN> ( expressionList )? <RPAREN> ) | xmlParse | xmlElement | ( <XMLPI> <LPAREN> ( <ID> idExpression | idExpression ) ( <COMMA> expression )? <RPAREN> ) | xmlForest | xmlSerialize | xmlQuery | ( id <LPAREN> ( <ALL> | <DISTINCT> )? ( expressionList )? ( orderby )? <RPAREN> filterClause ) )

stringConstant

xmlParse

::=
<XMLPARSE> <LPAREN> nonReserved expression ( nonReserved )? <RPAREN>

queryString

::=
nonReserved <LPAREN> expression ( <COMMA> derivedColumn )* <RPAREN>

xmlElement

::=
<XMLELEMENT> <LPAREN> ( <ID> id | id ) ( <COMMA> xmlNamespaces )? ( <COMMA> xmlAttributes )? ( <COMMA> expression )* <RPAREN>

xmlAttributes

::=
<XMLATTRIBUTES> <LPAREN> derivedColumn ( <COMMA> derivedColumn )* <RPAREN>

xmlForest

::=
<XMLFOREST> <LPAREN> ( xmlNamespaces <COMMA> )? derivedColumn ( <COMMA> derivedColumn )* <RPAREN>

xmlNamespaces

::=
<XMLNAMESPACES> <LPAREN> namespaceItem ( <COMMA> namespaceItem )* <RPAREN>

namespaceItem

::=
( stringVal <AS> id )

::=
( <NO> <DEFAULT_KEYWORD> )

::=
( <DEFAULT_KEYWORD> stringVal )

idExpression

::=
id

parseDataType

::=
( ( <STRING> ( ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) ) | ( <VARCHAR> ( ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) ) | <BOOLEAN> | ( <BYTE> ( ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) ) | ( <TINYINT> ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) | ( <SHORT> ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) | ( <SMALLINT> ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) | ( <CHAR> ( ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) ) | ( <INTEGER> ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) | ( <LONG> ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) | ( <BIGINT> ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) | ( <BIGINTEGER> ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) | ( <FLOAT> ( <LPAREN> <INTEGERVAL> ( <COMMA> <INTEGERVAL> )? <RPAREN> )? ) | ( <REAL> ( <LPAREN> <INTEGERVAL> ( <COMMA> <INTEGERVAL> )? <RPAREN> )? ) | ( <DOUBLE> ( <LPAREN> <INTEGERVAL> ( <COMMA> <INTEGERVAL> )? <RPAREN> )? ) | ( <BIGDECIMAL> ( <LPAREN> <INTEGERVAL> ( <COMMA> <INTEGERVAL> )? <RPAREN> )? ) | ( <DECIMAL> ( <LPAREN> <INTEGERVAL> ( <COMMA> <INTEGERVAL> )? <RPAREN> )? ) | <DATE> | <TIME> | <TIMESTAMP> | <OBJECT> | <BLOB> | <CLOB> | ( <VARBINARY> ( ( <LPAREN> <INTEGERVAL> <RPAREN> )? ) ) | <XML> )

dataType

intervalType

::=
( nonReserved )

literal

::=
( stringVal | <INTEGERVAL> | <FLOATVAL> | <DECIMALVAL> | <BINARYSTRINGVAL> | <FALSE> | <TRUE> | <UNKNOWN> | <NULL> | ( ( <BOOLEANTYPE> | <TIMESTAMPTYPE> | <DATETYPE> | <TIMETYPE> ) stringVal <RBRACE> ) )

parseMetadata

::=
ddlStmts ( <SEMICOLON> )? ( ddlStmts ( <SEMICOLON> )? )*

ddlStmts

createNameSpace

::=
<SET> nonReserved stringVal <AS> id

createDDLProcedure

::=
<CREATE> ( <VIRTUAL> )? ( <PROCEDURE> | <FUNCTION> ) ( id <LPAREN> ( procedureParameter )? ( <COMMA> procedureParameter )* <RPAREN> <RETURNS> ( procedureReturn | parseDataType ) ( optionsClause )? ( <AS> statement )? )

procedureParameter

::=
( ( ( <IN> ) | ( <OUT> ) | ( <INOUT> ) ) )? id parseDataType

procedureReturn

::=
<LPAREN> id parseDataType ( <COMMA> id parseDataType )* <RPAREN>

createTable

::=
<CREATE> ( <FOREIGN> <TABLE> | ( <VIRTUAL> )? nonReserved ) id ( <LPAREN> createColumn ( <COMMA> createColumn )* ( <CONSTRAINT> ( primaryKeys | constraints | foreignKeys ) ( <COMMA> ( primaryKeys | constraints | foreignKeys ) )* )? <RPAREN> )? ( optionsClause )? ( <AS> queryExpression )?

foreignKeys

::=
<FOREIGN> nonReserved getColumnNames <REFERENCES> id ( getColumnNames )?

primaryKeys

::=
<PRIMARY> nonReserved

constraints

::=
( <UNIQUE> | nonReserved )

getColumnNames

::=
<LPAREN> id ( <COMMA> id )* <RPAREN>

createColumn

::=
id ( parseDataType ) ( <NOT> <NULL> )? ( ( ( <UNIQUE> ) | ( nonReserved )+ | ( <PRIMARY> nonReserved ) )? ) ( <DEFAULT_KEYWORD> stringVal )? ( optionsClause )?

optionsClause

::=
<OPTIONS> <LPAREN> optionPair ( <COMMA> optionPair )* <RPAREN>

optionPair

::=
id ( ( stringVal ) | ( <INTEGERVAL> ) | ( <DECIMALVAL> ) )

JBoss.org Content Archive (Read Only), exported from JBoss Community Documentation Editor at 2020-03-13 12:01:28 UTC, last content change 2012-05-01 16:13:05 UTC.